๋ฆฌ์กํธ ๋์์ฑ ๋ชจ๋์ ๋ฆฌ์์ค ์ค์ผ์ค๋ง๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํตํด ๊ธ๋ก๋ฒ ํ๊ฒฝ์ ๋ง๋ ๊ณ ์ฑ๋ฅ์ ๋ฐ์ํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
๋ฆฌ์กํธ ๋์์ฑ ๋ชจ๋ ๋ฆฌ์์ค ์ค์ผ์ค๋ง: ๋ฉ๋ชจ๋ฆฌ ์ธ์ ์์ ๊ด๋ฆฌ
๋ฆฌ์กํธ ๋์์ฑ ๋ชจ๋(Concurrent Mode)๋ ๊ฐ๋ฐ์๊ฐ ๋ ๋ฐ์์ฑ์ด ๋ฐ์ด๋๊ณ ์ฑ๋ฅ์ด ์ข์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ด ๋๋ ๋ฆฌ์กํธ์ ์๋ก์ด ๊ธฐ๋ฅ ๋ชจ์์ ๋๋ค. ๊ทธ ํต์ฌ์๋ ๋ค์ํ ์์ ์ ์คํ์ ๊ด๋ฆฌํ๊ณ ์ฌ์ฉ์ ์ํธ์์ฉ์ ์ฐ์ ์์๋ฅผ ์ ํ๋ฉฐ, ๊ณผ๋ถํ ์ํ์์๋ ๋ถ๋๋ฌ์ด ๊ฒฝํ์ ๋ณด์ฅํ๋ ์ ๊ตํ ๋ฆฌ์์ค ์ค์ผ์ค๋ง ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค. ์ด ๊ธ์์๋ ๋ฆฌ์กํธ ๋์์ฑ ๋ชจ๋์ ๋ฆฌ์์ค ์ค์ผ์ค๋ง์ ๋ณต์กํ ๋ถ๋ถ์ ๊น์ด ํ๊ณ ๋ค์ด, ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํด ์ต์ ์ ์ฑ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ ์ฐ์ ์์๋ฅผ ์ ํ๋ ๋ฐฉ๋ฒ์ ์ค์ ์ ์ผ๋ก ๋ค๋ฃน๋๋ค.
๋์์ฑ ๋ชจ๋์ ๊ทธ ๋ชฉํ ์ดํดํ๊ธฐ
์ ํต์ ์ธ ๋ฆฌ์กํธ ๋ ๋๋ง์ ๋๊ธฐ์ ์ด๊ณ ๋ธ๋กํน ๋ฐฉ์์ ๋๋ค. ์ด๋ ๋ฆฌ์กํธ๊ฐ ์ปดํฌ๋ํธ ํธ๋ฆฌ๋ฅผ ๋ ๋๋งํ๊ธฐ ์์ํ๋ฉด ์ ์ฒด ํธ๋ฆฌ๊ฐ ๋ ๋๋ง๋ ๋๊น์ง ๊ณ์๋์ด, ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ๊ณ UI ์ ๋ฐ์ดํธ๋ฅผ ๋๋ฆฌ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๋์์ฑ ๋ชจ๋๋ ๋ ๋๋ง ์์ ์ ์ค๋จ, ์ผ์ ์ค์ง, ์ฌ๊ฐ ๋๋ ํฌ๊ธฐํ ์ ์๋ ๊ธฐ๋ฅ์ ๋์ ํ์ฌ ์ด๋ฌํ ํ๊ณ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ฆฌ์กํธ๋ ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌ, ์ ๋๋ฉ์ด์ ํ์ธํ , ๋คํธ์ํฌ ์์ฒญ ์๋ต ๋ฑ ๋ค๋ฅธ ์ค์ํ ์์ ๊ณผ ๋ ๋๋ง์ ๋ฒ๊ฐ์ ์ํํ ์ ์์ต๋๋ค.
๋์์ฑ ๋ชจ๋์ ์ฃผ์ ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ฐ์์ฑ: ์ฅ์๊ฐ ์คํ๋๋ ์์ ์ด ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ ์๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์งํฉ๋๋ค.
- ์ฐ์ ์์ ์ง์ : ๋ ๊ธด๊ธํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ๋ณด๋ค ์ฌ์ฉ์ ์ํธ์์ฉ(์: ํ์ดํ, ํด๋ฆญ)์ ์ฐ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ๋น๋๊ธฐ ๋ ๋๋ง: ๋ ๋๋ง์ ๋ ์๊ณ ์ค๋จ ๊ฐ๋ฅํ ์์ ๋จ์๋ก ๋๋๋๋ค.
- ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์ : ํนํ ๋ฆฌ์์ค๊ฐ ์ ํ์ ์ด๊ฑฐ๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ๋๋ฆฐ ์ฅ์น์์ ๋ ์ ๋์ ์ด๊ณ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
Fiber ์ํคํ ์ฒ: ๋์์ฑ์ ๊ธฐ๋ฐ
๋์์ฑ ๋ชจ๋๋ ๋ฆฌ์กํธ์ ๋ด๋ถ ๋ ๋๋ง ์์ง์ ์์ ํ ์ฌ์์ฑํ Fiber ์ํคํ ์ฒ ์์ ๊ตฌ์ถ๋์์ต๋๋ค. Fiber๋ UI์ ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ์์ ๋จ์(unit of work)๋ก ๋ํ๋ ๋๋ค. ์ด์ ์ ์คํ ๊ธฐ๋ฐ ์ฌ์กฐ์ ์(reconciler)์ ๋ฌ๋ฆฌ, Fiber๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(linked list) ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํธ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค. ์ด๋ฅผ ํตํด ๋ฆฌ์กํธ๋ ๊ธด๊ธ๋์ ๋ฐ๋ผ ๋ ๋๋ง ์์ ์ ์ผ์ ์ค์ง, ์ฌ๊ฐ ๋ฐ ์ฐ์ ์์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
Fiber์ ์ฃผ์ ๊ฐ๋ :
- Fiber ๋ ธ๋: ์์ ๋จ์(์: ์ปดํฌ๋ํธ ์ธ์คํด์ค)๋ฅผ ๋ํ๋ ๋๋ค.
- WorkLoop: Fiber ํธ๋ฆฌ๋ฅผ ๋ฐ๋ณตํ๋ฉฐ ๊ฐ Fiber ๋ ธ๋์์ ์์ ์ ์ํํ๋ ๋ฃจํ์ ๋๋ค.
- ์ค์ผ์ค๋ฌ: ์ฐ์ ์์์ ๋ฐ๋ผ ๋ค์์ ์ฒ๋ฆฌํ Fiber ๋ ธ๋๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- ์ฌ์กฐ์ (Reconciliation): ํ์ฌ Fiber ํธ๋ฆฌ์ ์ด์ ํธ๋ฆฌ๋ฅผ ๋น๊ตํ์ฌ DOM์ ์ ์ฉํด์ผ ํ ๋ณ๊ฒฝ ์ฌํญ์ ์๋ณํ๋ ๊ณผ์ ์ ๋๋ค.
๋์์ฑ ๋ชจ๋์ ๋ฆฌ์์ค ์ค์ผ์ค๋ง
๋ฆฌ์์ค ์ค์ผ์ค๋ฌ๋ ๋์์ฑ ๋ชจ๋์์ ๋ค์ํ ์์ ์ ์คํ์ ๊ด๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค. ๊ธด๊ธ๋์ ๋ฐ๋ผ ์์ ์ ์ฐ์ ์์๋ฅผ ์ ํ๊ณ ๊ทธ์ ๋ฐ๋ผ ๋ฆฌ์์ค(CPU ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ)๋ฅผ ํ ๋นํฉ๋๋ค. ์ค์ผ์ค๋ฌ๋ ๊ฐ์ฅ ์ค์ํ ์์ ์ด ๋จผ์ ์๋ฃ๋๋๋ก ๋ณด์ฅํ๊ธฐ ์ํด ๋ค์ํ ๊ธฐ์ ์ ์ฌ์ฉํ๋ฉฐ, ๋ ๊ธด๊ธํ ์์ ์ ๋์ค์ผ๋ก ์ฐ๊ธฐํฉ๋๋ค.
์์ ์ฐ์ ์์ ์ง์
๋ฆฌ์กํธ ๋์์ฑ ๋ชจ๋๋ ์์ ์ด ์คํ๋๋ ์์๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ์ฐ์ ์์ ๊ธฐ๋ฐ ์ค์ผ์ค๋ง ์์คํ ์ ์ฌ์ฉํฉ๋๋ค. ์์ ์ ์ค์๋์ ๋ฐ๋ผ ๋ค๋ฅธ ์ฐ์ ์์๊ฐ ํ ๋น๋ฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์ฐ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ฆ์(Immediate) ์ฐ์ ์์: ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌ์ ๊ฐ์ด ์ฆ์ ์๋ฃ๋์ด์ผ ํ๋ ์์ ์ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ฌ์ฉ์ ์ฐจ๋จ(User-Blocking) ์ฐ์ ์์: ์ฌ์ฉ์ ์์ ์ ๋ํ UI ์ ๋ฐ์ดํธ์ ๊ฐ์ด ์ฌ์ฉ์๊ฐ UI์ ์ํธ์์ฉํ๋ ๊ฒ์ ์ฐจ๋จํ๋ ์์ ์ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ณดํต(Normal) ์ฐ์ ์์: ์ค์ํ์ง ์์ UI ๋ถ๋ถ์ ๋ ๋๋งํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์๊ฐ์ด ์ค์ํ์ง ์์ ์์ ์ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฎ์(Low) ์ฐ์ ์์: ์ฆ์ ๋ณด์ด์ง ์๋ ์ฝํ ์ธ ๋ฅผ ์ฌ์ ๋ ๋๋งํ๋ ๊ฒ๊ณผ ๊ฐ์ด ๋์ค์ผ๋ก ์ฐ๊ธฐํ ์ ์๋ ์์ ์ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ ํด(Idle) ์ฐ์ ์์: ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ์ ๊ฐ์ด ๋ธ๋ผ์ฐ์ ๊ฐ ์ ํด ์ํ์ผ ๋๋ง ์คํ๋๋ ์์ ์ ์ฌ์ฉ๋ฉ๋๋ค.
์ค์ผ์ค๋ฌ๋ ์ด๋ฌํ ์ฐ์ ์์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์์ ์คํํ ์์ ์ ๊ฒฐ์ ํฉ๋๋ค. ์ฐ์ ์์๊ฐ ๋์ ์์ ์ ์ฐ์ ์์๊ฐ ๋ฎ์ ์์ ๋ณด๋ค ๋จผ์ ์คํ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์์คํ ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆฐ ๊ฒฝ์ฐ์๋ ๊ฐ์ฅ ์ค์ํ ์์ ์ด ๋จผ์ ์๋ฃ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
์ค๋จ ๊ฐ๋ฅํ ๋ ๋๋ง
๋์์ฑ ๋ชจ๋์ ์ฃผ์ ๊ธฐ๋ฅ ์ค ํ๋๋ ์ค๋จ ๊ฐ๋ฅํ ๋ ๋๋ง์ ๋๋ค. ์ด๋ ์ฐ์ ์์๊ฐ ๋ ๋์ ์์ ์ ์คํํด์ผ ํ ๊ฒฝ์ฐ ์ค์ผ์ค๋ฌ๊ฐ ๋ ๋๋ง ์์ ์ ์ค๋จํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฆฌ์กํธ๊ฐ ํฐ ์ปดํฌ๋ํธ ํธ๋ฆฌ๋ฅผ ๋ ๋๋งํ๋ ๋์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅ ํ๋์ ์ ๋ ฅ์ ์์ํ๋ฉด, ์ค์ผ์ค๋ฌ๋ ๋ ๋๋ง ์์ ์ ์ค๋จํ๊ณ ์ฌ์ฉ์ ์ ๋ ฅ์ ๋จผ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฆฌ์กํธ๊ฐ ๋ณต์กํ ๋ ๋๋ง ์์ ์ ์ํํ๋ ์ค์๋ UI๊ฐ ๋ฐ์์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
๋ ๋๋ง ์์ ์ด ์ค๋จ๋๋ฉด ๋ฆฌ์กํธ๋ Fiber ํธ๋ฆฌ์ ํ์ฌ ์ํ๋ฅผ ์ ์ฅํฉ๋๋ค. ์ค์ผ์ค๋ฌ๊ฐ ๋ ๋๋ง ์์ ์ ์ฌ๊ฐํ๋ฉด ์ฒ์๋ถํฐ ๋ค์ ์์ํ ํ์ ์์ด ์ค๋จ๋ ์ง์ ๋ถํฐ ๊ณ์ํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ํฌ๊ณ ๋ณต์กํ UI๋ฅผ ๋ค๋ฃฐ ๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
ํ์ ์ฌ๋ผ์ด์ฑ(Time Slicing)
ํ์ ์ฌ๋ผ์ด์ฑ์ ๋ฆฌ์์ค ์ค์ผ์ค๋ฌ๊ฐ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์์ฑ์ ํฅ์์ํค๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ ๋ค๋ฅธ ๊ธฐ์ ์ ๋๋ค. ํ์ ์ฌ๋ผ์ด์ฑ์ ๋ ๋๋ง ์์ ์ ๋ ์์ ์์ ๋ฉ์ด๋ฆฌ(chunk)๋ก ๋๋๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ค์ผ์ค๋ฌ๋ ๊ฐ ์์ ๋ฉ์ด๋ฆฌ์ ์งง์ ์๊ฐ("ํ์ ์ฌ๋ผ์ด์ค")์ ํ ๋นํฉ๋๋ค. ํ์ ์ฌ๋ผ์ด์ค๊ฐ ๋ง๋ฃ๋ ํ, ์ค์ผ์ค๋ฌ๋ ์คํํด์ผ ํ ์ฐ์ ์์๊ฐ ๋ ๋์ ์์ ์ด ์๋์ง ํ์ธํฉ๋๋ค. ๋ง์ฝ ์๋ค๋ฉด ์ค์ผ์ค๋ฌ๋ ํ์ฌ ์์ ์ ์ค๋จํ๊ณ ์ฐ์ ์์๊ฐ ๋ ๋์ ์์ ์ ์คํํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค์ผ์ค๋ฌ๋ ํ์ฌ ์์ ์ ์๋ฃํ๊ฑฐ๋ ๋ค๋ฅธ ์ฐ์ ์์๊ฐ ๋์ ์์ ์ด ๋์ฐฉํ ๋๊น์ง ๊ณ์ํฉ๋๋ค.
ํ์ ์ฌ๋ผ์ด์ฑ์ ์ฅ์๊ฐ ์คํ๋๋ ๋ ๋๋ง ์์ ์ด ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ค๋ ์๊ฐ ๋์ ์ฐจ๋จํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ์ด๋ ๋ฆฌ์กํธ๊ฐ ๋ณต์กํ ๋ ๋๋ง ์์ ์ ์ํํ ๋์๋ ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ ์๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ธ์ ์์ ๊ด๋ฆฌ
๋ฆฌ์กํธ ๋์์ฑ ๋ชจ๋์ ๋ฆฌ์์ค ์ค์ผ์ค๋ง์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๋ ๊ณ ๋ คํฉ๋๋ค. ๋ฆฌ์กํธ๋ ํนํ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ์ฅ์น์์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ต์ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ด๋ ์ฌ๋ฌ ์ ๋ต์ ํตํด ๋ฌ์ฑ๋ฉ๋๋ค:
๊ฐ์ฒด ํ๋ง(Object Pooling)
๊ฐ์ฒด ํ๋ง์ ์ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋์ ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ๋ ๊ธฐ์ ์ ๋๋ค. ์ด๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ ๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค. ๋ฆฌ์กํธ๋ Fiber ๋ ธ๋ ๋ฐ ์ ๋ฐ์ดํธ ํ์ ๊ฐ์ด ์์ฃผ ์์ฑ๋๊ณ ์๋ฉธ๋๋ ๊ฐ์ฒด์ ๋ํด ๊ฐ์ฒด ํ๋ง์ ์ฌ์ฉํฉ๋๋ค.
๊ฐ์ฒด๊ฐ ๋ ์ด์ ํ์ํ์ง ์์ผ๋ฉด ๊ฐ๋น์ง ์ปฌ๋ ์ ๋๋ ๋์ ํ(pool)๋ก ๋ฐํ๋ฉ๋๋ค. ๋ค์์ ํด๋น ์ ํ์ ๊ฐ์ฒด๊ฐ ํ์ํ ๋, ์ฒ์๋ถํฐ ์๋ก ๋ง๋๋ ๋์ ํ์์ ๊ฐ์ ธ์ต๋๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ค๋ฒํค๋๋ฅผ ์ค์ฌ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ฐ๋น์ง ์ปฌ๋ ์ ๋ฏผ๊ฐ์ฑ
๋์์ฑ ๋ชจ๋๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ฏผ๊ฐํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ค์ผ์ค๋ฌ๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ๋ ๋ฐฉ์์ผ๋ก ์์ ์ ์ค์ผ์ค๋งํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ค์ผ์ค๋ฌ๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ฃผ๊ธฐ๋ฅผ ์ ๋ฐํ ์ ์๋ ๋ค๋์ ๊ฐ์ฒด๋ฅผ ํ ๋ฒ์ ์์ฑํ๋ ๊ฒ์ ํผํ ์ ์์ต๋๋ค. ๋ํ ํน์ ์์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ด๊ธฐ ์ํด ์์ ์ ๋ ์์ ๋ฉ์ด๋ฆฌ๋ก ์ํํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์ค์ํ์ง ์์ ์์ ์ฐ๊ธฐ
์ฌ์ฉ์ ์ํธ์์ฉ์ ์ฐ์ ์์๋ฅผ ์ ํ๊ณ ์ค์ํ์ง ์์ ์์ ์ ์ฐ๊ธฐํจ์ผ๋ก์จ ๋ฆฌ์กํธ๋ ํน์ ์์ ์ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ค์ผ ์ ์์ต๋๋ค. ์ฌ์ฉ์์๊ฒ ์ฆ์ ๋ณด์ด์ง ์๋ ์ฝํ ์ธ ๋ฅผ ์ฌ์ ๋ ๋๋งํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์ฆ์ ํ์ํ์ง ์์ ์์ ์ ์์คํ ์ด ๋ ๋ฐ์ ๋ ๋์ค์ผ๋ก ์ฐ๊ธฐ๋ ์ ์์ต๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ด๊ณ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
์ค์ฉ์ ์ธ ์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
๋ฆฌ์กํธ ๋์์ฑ ๋ชจ๋์ ๋ฆฌ์์ค ์ค์ผ์ค๋ง์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ด๋ป๊ฒ ๊ฐ์ ํ ์ ์๋์ง ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
์์ 1: ์ ๋ ฅ ์ฒ๋ฆฌ
์ฌ๋ฌ ์ ๋ ฅ ํ๋์ ๋ณต์กํ ์ ํจ์ฑ ๊ฒ์ฌ ๋ก์ง์ด ์๋ ์์์ ์์ํด ๋ณด์ธ์. ์ ํต์ ์ธ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ ๋ ฅ ํ๋์ ์ ๋ ฅํ๋ฉด ์ ์ฒด ์์์ ๋๊ธฐ์ ์ ๋ฐ์ดํธ๊ฐ ๋ฐ์ํ์ฌ ๋์ ๋๋ ์ง์ฐ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๋์์ฑ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฆฌ์กํธ๋ ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌ์ ์ฐ์ ์์๋ฅผ ์ ํ์ฌ ์ ํจ์ฑ ๊ฒ์ฌ ๋ก์ง์ด ๋ณต์กํ๋๋ผ๋ UI๊ฐ ๋ฐ์์ฑ์ ์ ์งํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ฉด ๋ฆฌ์กํธ๋ ์ฆ์ ์ ๋ ฅ ํ๋๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ํจ์ฑ ๊ฒ์ฌ ๋ก์ง์ ๋ ๋ฎ์ ์ฐ์ ์์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ผ๋ก ์คํ๋์ด ์ฌ์ฉ์์ ํ์ดํ ๊ฒฝํ์ ๋ฐฉํดํ์ง ์๋๋ก ํฉ๋๋ค. ๋ค๋ฅธ ๋ฌธ์ ์งํฉ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๋ ํด์ธ ์ฌ์ฉ์์ ๊ฒฝ์ฐ, ํนํ ์ฑ๋ฅ์ด ๋ฎ์ ํ๋ก์ธ์๋ฅผ ๊ฐ์ง ์ฅ์น์์ ์ด๋ฌํ ๋ฐ์์ฑ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์์ 2: ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
์ฌ๋ฌ API์ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ๋์๋ณด๋๋ฅผ ์๊ฐํด ๋ณด์ธ์. ์ ํต์ ์ธ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๊ฐ์ ธ์ค๋ฉด ๋ชจ๋ ์์ฒญ์ด ์๋ฃ๋ ๋๊น์ง UI๊ฐ ์ฐจ๋จ๋ ์ ์์ต๋๋ค. ๋์์ฑ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฆฌ์กํธ๋ ๋ฐ์ดํฐ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ๊ฐ์ ธ์ค๊ณ UI๋ฅผ ์ ์ง์ ์ผ๋ก ๋ ๋๋งํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ์ค์ํ ๋ฐ์ดํฐ๋ ๋จผ์ ๊ฐ์ ธ์ ํ์ํ๊ณ , ๋ ์ค์ํ ๋ฐ์ดํฐ๋ ๋์ค์ ๊ฐ์ ธ์ ํ์ํ ์ ์์ต๋๋ค. ์ด๋ ๋ ๋น ๋ฅธ ์ด๊ธฐ ๋ก๋ ์๊ฐ๊ณผ ๋ ๋ฐ์์ฑ ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ์ ์ธ๊ณ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ฃผ์ ๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ํด ๋ณด์ธ์. ๋ค๋ฅธ ์๊ฐ๋์ ์๋ ๊ฑฐ๋์๋ค์ ์ค์๊ฐ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๊ฐ ํ์ํฉ๋๋ค. ๋์์ฑ ๋ชจ๋๋ ์ค์ํ ์ฃผ์ ์ ๋ณด๋ฅผ ์ฆ์ ํ์ํ๋ฉด์ ๋ ์ค์ํ ์์ฅ ๋ถ์์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ก๋ํ์ฌ, ์ ์ธ๊ณ์ ์ผ๋ก ๋ค์ํ ๋คํธ์ํฌ ์๋์์๋ ๋ฐ์์ฑ ์๋ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
์์ 3: ์ ๋๋ฉ์ด์
์ ๋๋ฉ์ด์ ์ ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋ค์ด ํ๋ ์ ๋๋กญ๊ณผ ๋ฒ๋ฒ ๊ฑฐ๋ฆฌ๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๋ฐํ ์ ์์ต๋๋ค. ๋์์ฑ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฆฌ์กํธ๋ ์ ๋๋ฉ์ด์ ์ ์ฐ์ ์์๋ฅผ ์ ํ์ฌ ๋ค๋ฅธ ์์ ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ ์ค์ผ ๋๋ ๋ถ๋๋ฝ๊ฒ ๋ ๋๋ง๋๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ ๋๋ฉ์ด์ ์์ ์ ๋์ ์ฐ์ ์์๋ฅผ ํ ๋นํจ์ผ๋ก์จ ๋ฆฌ์กํธ๋ ์ ๋๋ฉ์ด์ ํ๋ ์์ด ์ ์๊ฐ์ ๋ ๋๋ง๋๋๋ก ํ์ฌ ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ธ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ํ ํ์ด์ง ๊ฐ ์ ํ์ ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ๋ ์ ์์๊ฑฐ๋ ์ฌ์ดํธ๋ ํด์ธ ์ผํ๊ฐ์๊ฒ ๊ธฐ๊ธฐ๋ ์์น์ ๊ด๊ณ์์ด ์ ์ฐํ๊ณ ์๊ฐ์ ์ผ๋ก ์ฆ๊ฑฐ์ด ๊ฒฝํ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
๋์์ฑ ๋ชจ๋ ํ์ฑํํ๊ธฐ
๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋์์ฑ ๋ชจ๋๋ฅผ ํ์ฑํํ๋ ค๋ฉด ๊ธฐ์กด์ `ReactDOM.render` API ๋์ `createRoot` API๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ค์์ ์์ ์ ๋๋ค:
import React from 'react';
import { createRoot } from 'react-dom/client';
import App from './App';
const container = document.getElementById('root');
const root = createRoot(container); // TypeScript๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ createRoot(container!)
root.render( );
๋ํ ์ปดํฌ๋ํธ๊ฐ ๋์์ฑ ๋ชจ๋์ ํธํ๋๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์ด๋ ์ปดํฌ๋ํธ๊ฐ ๋ถ์์ฉ์ด๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ํ์ ์์กดํ์ง ์๋ ์์ ํจ์์ฌ์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ํด๋์ค ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ํ (hook)์ด ์๋ ํจ์ํ ์ปดํฌ๋ํธ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๋์์ฑ ๋ชจ๋์์ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
๋ฆฌ์กํธ ๋์์ฑ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ต์ ํํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง ํผํ๊ธฐ: `React.memo`์ `useMemo`๋ฅผ ์ฌ์ฉํ์ฌ props๊ฐ ๋ณ๊ฒฝ๋์ง ์์์ ๋ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋๋ ๊ฒ์ ๋ฐฉ์งํ์ธ์. ์ด๋ ๋ฆฌ์กํธ๊ฐ ํด์ผ ํ ์์ ์ ์์ ํฌ๊ฒ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ์ง์ฐ ๋ก๋ฉ(lazy loading) ์ฌ์ฉํ๊ธฐ: ์ปดํฌ๋ํธ๊ฐ ํ์ํ ๋๋ง ๋ก๋ํ์ธ์. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ์ค์ด๊ณ ๋ฐ์์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ์ด๋ฏธ์ง ์ต์ ํํ๊ธฐ: ์ต์ ํ๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๊ธฐ๋ฅผ ์ค์ด์ธ์. ์ด๋ ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ค์ผ ์ ์์ต๋๋ค.
- ์ฝ๋ ๋ถํ (code splitting) ์ฌ์ฉํ๊ธฐ: ์ฝ๋๋ฅผ ํ์์ ๋ฐ๋ผ ๋ก๋ํ ์ ์๋ ๋ ์์ ๋ฉ์ด๋ฆฌ๋ก ๋๋์ธ์. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ์ค์ด๊ณ ๋ฐ์์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐฉ์งํ๊ธฐ: ์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ๋ ๋ ์ฌ์ฉ ์ค์ธ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์ ๋ฆฌํด์ผ ํฉ๋๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ํนํ, ๊ตฌ๋ ํด์ง, ํ์ด๋จธ ์ทจ์ ๋ฐ ๋ณด์ ํ๊ณ ์๋ ๊ธฐํ ๋ฆฌ์์ค๋ฅผ ํด์ ํด์ผ ํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ํ๋กํ์ผ๋งํ๊ธฐ: ๋ฆฌ์กํธ ํ๋กํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ์ธ์. ์ด๋ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ผ ์ ์๋ ์์ญ์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
๊ตญ์ ํ ๋ฐ ์ ๊ทผ์ฑ ๊ณ ๋ ค์ฌํญ
์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ๋๋ ๊ตญ์ ํ(i18n)์ ์ ๊ทผ์ฑ(a11y)์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ ๋๋ง์ ๋น๋๊ธฐ์ ํน์ฑ์ด ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๋ ๋ค๋ฅธ ์ง์ญ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฏ๋ก, ๋์์ฑ ๋ชจ๋๋ฅผ ์ฌ์ฉํ ๋ ์ด๋ฌํ ๊ณ ๋ ค์ฌํญ์ ๋์ฑ ์ค์ํด์ง๋๋ค.
๊ตญ์ ํ(Internationalization)
- i18n ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ: `react-intl` ๋๋ `i18next`์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ญ์ ๊ด๋ฆฌํ๊ณ ๋ค๋ฅธ ๋ก์ผ์ผ์ ์ฒ๋ฆฌํ์ธ์. UI๋ฅผ ์ฐจ๋จํ์ง ์๋๋ก ๋ฒ์ญ์ด ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋๋๋๋ก ํ์ธ์.
- ๋ ์ง ๋ฐ ์ซ์ ์์ ์ง์ : ์ฌ์ฉ์์ ๋ก์ผ์ผ์ ๋ฐ๋ผ ๋ ์ง, ์ซ์, ํตํ์ ์ ์ ํ ์์์ ์ฌ์ฉํ์ธ์.
- ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฐ๋ ์ธ์ด ์ง์: ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฐ๋ ์ธ์ด๋ฅผ ์ง์ํด์ผ ํ๋ ๊ฒฝ์ฐ, ๋ ์ด์์๊ณผ ์คํ์ผ๋ง์ด ํด๋น ์ธ์ด์ ํธํ๋๋๋ก ํ์ธ์.
- ์ง์ญ์ ์ฐจ์ด ๊ณ ๋ ค: ๋ฌธํ์ ์ฐจ์ด๋ฅผ ์ธ์งํ๊ณ ์ฝํ ์ธ ์ ๋์์ธ์ ๊ทธ์ ๋ง๊ฒ ์กฐ์ ํ์ธ์. ์๋ฅผ ๋ค์ด, ์์ ์์ง, ์ด๋ฏธ์ง, ์ฌ์ง์ด ๋ฒํผ ๋ฐฐ์น๊น์ง๋ ๋ค๋ฅธ ๋ฌธํ๊ถ์์๋ ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ดํด๋์ง ์์ ์ ์๋ ๋ฌธํ์ ์ผ๋ก ํน์ ํ ๊ด์ฉ๊ตฌ๋ ์์ด ์ฌ์ฉ์ ํผํ์ธ์. ๊ฐ๋จํ ์๋ก ๋ ์ง ํ์(MM/DD/YYYY ๋ DD/MM/YYYY)์ ์ํํ๊ฒ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
์ ๊ทผ์ฑ(Accessibility)
- ์๋งจํฑ HTML ์ฌ์ฉ: ์๋งจํฑ HTML ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝํ ์ธ ์ ๊ตฌ์กฐ์ ์๋ฏธ๋ฅผ ๋ถ์ฌํ์ธ์. ์ด๋ ์คํฌ๋ฆฐ ๋ฆฌ๋ ๋ฐ ๊ธฐํ ๋ณด์กฐ ๊ธฐ์ ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ฝ๊ฒ ์ดํดํ๋๋ก ๋ง๋ญ๋๋ค.
- ์ด๋ฏธ์ง์ ๋์ฒด ํ ์คํธ ์ ๊ณต: ์๊ฐ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ์ด๋ฏธ์ง์ ๋ด์ฉ์ ์ดํดํ ์ ์๋๋ก ํญ์ ์ด๋ฏธ์ง์ ๋์ฒด ํ ์คํธ๋ฅผ ์ ๊ณตํ์ธ์.
- ARIA ์์ฑ ์ฌ์ฉ: ARIA ์์ฑ์ ์ฌ์ฉํ์ฌ ๋ณด์กฐ ๊ธฐ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ธ์.
- ํค๋ณด๋ ์ ๊ทผ์ฑ ๋ณด์ฅ: ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ์ํธ์์ฉ ์์๊ฐ ํค๋ณด๋๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ํ์ธ์.
- ๋ณด์กฐ ๊ธฐ์ ๋ก ํ ์คํธํ๊ธฐ: ์คํฌ๋ฆฐ ๋ฆฌ๋ ๋ฐ ๊ธฐํ ๋ณด์กฐ ๊ธฐ์ ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ์ฌ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ ๊ทผํ ์ ์๋์ง ํ์ธํ์ธ์. ๋ชจ๋ ์ธ์ด์ ๋ํด ์ฌ๋ฐ๋ฅธ ๋ ๋๋ง์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ตญ์ ๋ฌธ์ ์งํฉ์ผ๋ก ํ ์คํธํ์ธ์.
๊ฒฐ๋ก
๋ฆฌ์กํธ ๋์์ฑ ๋ชจ๋์ ๋ฆฌ์์ค ์ค์ผ์ค๋ง๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ธ์ ์์ ๊ด๋ฆฌ๋ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ๋ฐ์์ฑ์ด ์ข์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ์ฌ์ฉ์ ์ํธ์์ฉ์ ์ฐ์ ์์๋ฅผ ์ ํ๊ณ , ์ค์ํ์ง ์์ ์์ ์ ์ฐ๊ธฐํ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ต์ ํํจ์ผ๋ก์จ ๊ธฐ๊ธฐ๋ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๊ด๊ณ์์ด ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์ํํ ๊ฒฝํ์ ์ ๊ณตํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ์์ฉํ๋ ๊ฒ์ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํฌ ๋ฟ๋ง ์๋๋ผ ๋ชจ๋๋ฅผ ์ํ ๋ ํฌ์ฉ์ ์ด๊ณ ์ ๊ทผ์ฑ ์๋ ์น์ ๊ธฐ์ฌํ ๊ฒ์ ๋๋ค. ๋ฆฌ์กํธ๊ฐ ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ, ๋์์ฑ ๋ชจ๋๋ฅผ ์ดํดํ๊ณ ํ์ฉํ๋ ๊ฒ์ ํ๋์ ์ด๊ณ ๊ณ ์ฑ๋ฅ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ๋งค์ฐ ์ค์ํ ๊ฒ์ ๋๋ค.